#ifndef MESSAGEQUEUE_H
#define MESSAGEQUEUE_H
#include "global_define.h"

// 定义队列最大长度
const int QUEUE_SIZE = 5;

typedef struct Message{
    MessageType type;
    union {
        WifiConfigMessage wifiConfig; // Wi-Fi 配置消息 
        /*
        FIXME:
        */
        // IRCommandMessage irCommand; // 红外命令消息
        // LedControlMessage ledControl; // LED 控制消息
        // CustomMessage custom; // 自定义消息类型
    }body;
}Message;

// 消息队列结构体
typedef struct MessageQueue {
    Message data[QUEUE_SIZE];
    int head;
    int tail;
    int count;
}MessageQueue;

// 初始化队列
void initQueue(MessageQueue& queue);

// 判断队列是否为空
bool isQueueEmpty(const MessageQueue& queue);

// 判断队列是否已满
bool isQueueFull(const MessageQueue& queue);

// 入队操作
bool enqueue(MessageQueue& queue, Message message);

// 出队操作
bool dequeue(MessageQueue& queue, Message & message);

#endif
